package cn.iocoder.yudao.module.infra.controller.admin.infocolumncollect.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 基础资料表元素汇总 Excel 导出 Request VO，参数和 InfoColumnCollectPageReqVO 是一致的")
@Data
public class InfoColumnCollectExportReqVO {

    @Schema(description = "表编号", example = "11443")
    private Long tableId;

    @Schema(description = "字段名", example = "张三")
    private String columnName;

    @Schema(description = "字段类型", example = "2")
    private String dataType;

    @Schema(description = "字段描述")
    private String columnComment;

    @Schema(description = "是否允许为空")
    private Boolean nullable;

    @ExcelProperty("是否不可修改")
    private Boolean disable;

    @Schema(description = "是否主键")
    private Boolean primaryKey;

    @Schema(description = "是否自增")
    private Boolean autoIncrement;

    @Schema(description = "排序")
    private Integer ordinalPosition;

    @Schema(description = "Java 属性类型", example = "2")
    private String javaType;

    @Schema(description = "Java 属性名")
    private String javaField;

    @Schema(description = "字典类型", example = "1")
    private String dictType;

    @Schema(description = "数据示例")
    private String example;

    @Schema(description = "是否为 Create 创建操作的字段")
    private Boolean createOperation;

    @Schema(description = "是否为 Update 更新操作的字段")
    private Boolean updateOperation;

    @Schema(description = "是否为 List 查询操作的字段")
    private Boolean listOperation;

    @Schema(description = "List 查询操作的条件类型")
    private String listOperationCondition;

    @Schema(description = "是否为 List 查询操作的返回字段")
    private Boolean listOperationResult;

    @Schema(description = "显示类型", example = "2")
    private String htmlType;

    /**
     * 显示类型
     */
    private String eventType;
    /**
     * 显示类型
     */
    private String eventName;

    /**
     * 表格宽度
     */
    private Long tableWidth;

    /**
     * 方案编号
     */
    private String schemeCode;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

}
